package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.model.SysAdminUser;
import cn.huiyunche.base.service.vo.CWaybillVeneerVo;
import cn.huiyunche.base.service.vo.PageVo;
import cn.huiyunche.base.service.vo.WaybillNewVo;

import java.util.List;
import java.util.Map;

/**
 * 同城 运单Service
 *
 * @author lm
 */
public interface CWaybillVeneerService {

    /**
     * 待接单列表
     *
     * @param page the page
     * @return no grab list by page
     */
    Map<String, Object> getNoGrabListByPage(PageVo page);

    /**
     * 执行中列表
     *
     * @param page the page
     * @return already grab list by page
     */
    Map<String, Object> getAlreadyGrabListByPage(PageVo page);

    /**
     * 已完成列表
     *
     * @param page the page
     * @return done list by page
     */
    Map<String, Object> getDoneListByPage(PageVo page);

    /**
     * 我要接单
     *
     * @param id the id
     * @return long long
     */
    Long grabOne(Long id, Boolean isVineer) throws Exception;

    /**
     * 上报提车照片 运单改为待交车
     *
     * @param id        the id
     * @param attachs   the attachs
     * @param adminUser the admin user
     * @return long long
     */
    Long confirmSend(Long id, String attachs, SysAdminUser adminUser) throws Exception;

    /**
     * 上传交车照片 运单改为已交车
     *
     * @param id        the id
     * @param attachs   the attachs
     * @param adminUser the admin user
     * @return long long
     */
    Long confirmDliver(Long id, String attachs, SysAdminUser adminUser);

    /**
     * 运单详情
     *
     * @param id the id
     * @return by id
     */
    WaybillNewVo getById(Long id);

    /**
     * 首页显示 运单数
     *
     * @return order count
     */
    Map<String, Object> getOrderCount();

    /**
     * Gets execution list.
     *
     * @param isIntracity the is intracity
     * @return the execution list
     */
    List<CWaybillVeneerVo> getExecutionList(Boolean isIntracity);

    /**
     * Gets list by status.
     *
     * @param statusList the status list
     * @param params     the params
     * @return the list by status
     */
    List<CWaybillVeneerVo> getListByStatus(List<Integer> statusList, Map<String, Object> params);
}
